{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 作业内容：\n",
    "\n",
    "> 1，要做大量 $\\pi^0$ 介子的分子动力学模拟，如果温度为 $T=150 $ MeV, 尝试抽取 1000 个 $\\pi^0$ 介子的四动量 $k^{\\mu} = (E, k_x, k_y, k_z)$。\n",
    "\n",
    ">> 注意：$\\pi^0$ 介子是玻色子，质量 $m=135$ MeV, 动量的绝对值 $k=\\sqrt{k_x^2 + k_y^2 + k_z^2}$ 满足玻色爱因斯坦分布函数，\n",
    "\n",
    ">>\\begin{align}\n",
    "f(k) = {1 \\over e^{\\sqrt{k^2 + m^2} / T} - 1}\n",
    "\\end{align}\n",
    "\n",
    ">> 提示：先抽取动量的绝对值 k，然后赋予动量方向（$4\\pi$ 角内均匀分布）得到极角 $\\theta$ 和方位角 $\\phi$, 然后转化为笛卡尔坐标下,\n",
    "\n",
    ">>\\begin{align}\n",
    "k_x & = k \\cos(\\theta) \\sin(\\phi) \\\\\n",
    "k_y & = k \\cos(\\theta) \\cos(\\phi) \\\\\n",
    "k_z & = k \\sin(\\theta) \\\\\n",
    "E &= \\sqrt{m^2 + k_x^2 + k_y^2 + k_z^2}\n",
    "\\end{align}\n",
    "\n",
    "> 2，定义指标来评估模拟结果是否正确"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 参考答案\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from scipy.integrate import quad"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "def sampling(func, range_=[[0, 1], [0, 1]], n=1000):\n",
    "    r'''\n",
    "    Monte-Carlo sampling.\n",
    "    Args: 3\n",
    "        func: a function, the pdf. to be sampled.\n",
    "        range_: a list, [[xmin, xmax], [ymin, ymax]].\n",
    "        n: an integer, how many variables you want to simulate.\n",
    "    Return: 1\n",
    "        res: an array with n variables respect to the pdf. func.\n",
    "    '''\n",
    "    [xmin, xmax], [ymin, ymax] = range_\n",
    "    samples = np.zeros(n, dtype=np.float32)\n",
    "    i = 0\n",
    "    while i < n:\n",
    "        x = np.random.uniform(xmin, xmax)\n",
    "        y = np.random.uniform(ymin, ymax)\n",
    "        if y < func(x):\n",
    "            samples[i] = x\n",
    "            i = i + 1\n",
    "    return samples\n",
    "\n",
    "def samplingV2(func, range_=[[0, 1], [0, 1]], n=1000, alpha=100):\n",
    "    r'''\n",
    "    Monte-Carlo sampling. version 2.\n",
    "    Args: 4\n",
    "        func: a function, the pdf. to be sampled.\n",
    "        range_: a list, [[xmin, xmax], [ymin, ymax]].\n",
    "        n: an integer, how many variables you want to simulate.\n",
    "        alpha: an int, generate alpha times of n variables candidates for one time.\n",
    "    Return: 1\n",
    "        res: an array with n variables respect to the pdf. func.\n",
    "    '''\n",
    "    [xmin, xmax], [ymin, ymax] = range_\n",
    "    res = np.array([])\n",
    "    while len(res) < n:\n",
    "        x = np.random.uniform(xmin, xmax, (alpha*n,))\n",
    "        y = np.random.uniform(ymin, ymax, (alpha*n,))\n",
    "        f = func(x)\n",
    "        res_tmp = x[f>y]\n",
    "        res = np.concatenate((res, res_tmp))\n",
    "    res = res[:n]\n",
    "    return res"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Amplitude: 6253122.113763517\n",
      "Maximum of p(k): 0.0018086460298166697\n",
      "Minimum of p(k): 0.0\n"
     ]
    }
   ],
   "source": [
    "#define the raw distribution of k\n",
    "def raw_func(k, m=135, T=150):\n",
    "    return k**2 /(np.exp((k**2 + m**2)**0.5 /T) - 1)\n",
    "\n",
    "#calculate the normalization constant\n",
    "amplitude, _ = quad(raw_func, 0, 1500, (135, 150))\n",
    "\n",
    "#get the normalized distribution\n",
    "def func(k, m=135, T=150):\n",
    "    global amplitude\n",
    "    return raw_func(k, m, T) / amplitude\n",
    "\n",
    "#check\n",
    "k0 = np.linspace(0, 1500, 150)\n",
    "pk0 = func(k0)\n",
    "pmax = pk0.max()\n",
    "pmin = pk0.min()\n",
    "print('Amplitude: {}'.format(amplitude))\n",
    "print('Maximum of p(k): {}'.format(pmax))\n",
    "print('Minimum of p(k): {}'.format(pmin))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "抽样k，$\\theta$和$\\phi$时，注意到：\n",
    "\n",
    "$$p(\\vec k)d\\vec k = K(k)\\Theta(\\theta)\\Phi(\\phi)k^2\\sin(\\theta)dkd\\theta d\\phi$$\n",
    "\n",
    "把它们分成3个部分：\n",
    "\n",
    "$$ p(k)dk = K(k)k^2dk $$\n",
    "\n",
    "$$ p(\\theta)d\\theta = \\Theta(\\theta)\\sin(\\theta)d\\theta $$\n",
    "\n",
    "$$ p(\\phi)d\\phi = \\Phi(\\phi)d\\phi $$\n",
    "\n",
    "已知$K(k) = {1 \\over e^{\\sqrt{k^2 + m^2} / T} - 1}$，所以抽样k遵循：\n",
    "\n",
    "$$ p(k)dk = A{k^2 \\over e^{\\sqrt{k^2 + m^2} / T} - 1}dk $$\n",
    "\n",
    "A是归一化常数，对不带A的部分做全空间积分，取倒数即可求得A。\n",
    "\n",
    "而对方位角和极角而言，本身的分布是因为各向同性而均匀分布的，所以抽样$\\theta$遵循：\n",
    "\n",
    "$$ p(\\theta)d\\theta = \\sin(\\theta)d\\theta $$\n",
    "\n",
    "注意到这个其实等价于$  d\\cos(\\theta) $也就是对$\\cos(\\theta)$做均匀分布的抽样，恰好，我们需要用到计算动量分量的也是$\\theta$的正弦和余弦值，利用公式$\\sin^2 x + \\cos^2 x = 1$，在$[0, \\pi]$区间上，正弦值恒为正，所以这里可以取巧，直接抽样$\\cos(\\theta)$然后算$\\sin(\\theta)=\\sqrt{(1-\\cos(\\theta)}$\n",
    "\n",
    "对$\\phi$的抽样最简单，直接在$[0, 2\\pi]$上做均匀分布的抽样即可。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "#simulate k, theta and phi\n",
    "n = 100000\n",
    "k = sampling(func, [[0, 1500], [pmin, pmax]], n=n)\n",
    "cos_theta = np.random.uniform(-1, 1, (n,))\n",
    "sin_theta = np.sqrt(1 - cos_theta**2)\n",
    "phi = np.random.uniform(0, 2*np.pi, (n,))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5, 1.0, 'k')"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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JElJSZx77rksW7YMgMcee4zbb7+d/v37c/rppzN+/HjAe9vdhg0bSE5O5oEHHgDgmWeeoU+fPiQlJfHnP/+51Ax///vf+cMf/kCXLl0AiIqKKvqj4dNPP+Wcc86hR48eDBo0iF9++aUow+jRo7nkkku4+eabjztfWbmLy8rKOu6Pm86dOxc9Q2DkyJH06tWLbt26HfeHR2xsLA899BC9evVi0KBBLF68uOifwcyZMwHviHvEiBEMGTKEzp0785e//OWE987IyODMM88s2v/KK69kyJAhdOzY8bgHD02YMIFOnTrRv39/7rrrLsaOHVvqP79j4uPj6dChA1lZWQBkZ2dz1VVX0adPH/r06cMPP/wAwLfffktycjLJycn06NGD/fv3n3CFZOzYsUyaNOm4848bN47Dhw+TnJzMDTfccNIs5VHhS9XJzoa+ffnDNxNZ2qIT/Oc/sGQJvPUWCQd7ktBoOAkXPgybNsH998OMGd7HiZb4F1wk1I0aNYqpU6eSm5vLsmXLOOecc4pe+/Of/0yPHj1YtmwZTz755HHFumbNGr788ksWL17MX/7yF44cOcJTTz3FGWecQVpaGs888wxz5sxh/fr1LF68mLS0NJYsWcJ33313QoYVK1bQq1evUvNdeOGF/Pjjj/z888+MGjWKv//970WvLVmyhE8++YT33nvvuGNOlvuY22+/naeffprzzjuPP/7xj6xfv77otYkTJ7JkyRJSU1MZP348OTk5ABw8eJD+/fuzZMkS4uLi+OMf/8jcuXP5+OOPefTRR4uOX7x4MZMnTyYtLY3333+f8lZZTUtLY9q0aSxfvpxp06aRmZnJtm3b+L//+z9+/PFH5s6dy5o1a056DoAtW7aQm5tLUlISAL/97W+57777+Omnn/jwww+58847AXj22Wd56aWXSEtLY8GCBdSpU6fcc4N34aQ6deqQlpZ2yosn6ZK+VI0tW+CSS2DzZn51xSN82el8Mnr0KH3fFi3gmWfgd7+DG26A227jqaRL+POgX5EXHVP6MSIhJCkpiYyMDKZMmcJll1123Gvff/89H374IQADBgwgJyeHvXv3AjBs2DBiYmKIiYnhtNNOKxp5FzdnzhzmzJlDD99/fwcOHGD9+vX07dvX73wej4frrruOrKws8vPzad++fdFrw4cPL7WsysrdoEGDon2Sk5PZuHEjc+bMYd68efTp04eFCxfStWtXxo8fz8cffwxAZmYm69evJz4+nlq1ajFkyBAAunfvTkxMDNHR0XTv3p2MjIyicw8ePJj4+HgArrzySr7//nt69z5hddkiAwcOLMqWmJjI5s2b2blzJ/369aNx48aA9zHD69atK/X4adOm8fXXX7N27VreeOMNateuDcC8efNYtWpV0X779u1j//79XHDBBdx///3ccMMNXHnllbRu3brMbNVFI3w5ZW32bIfzz4ft22HuXL7sdL5/BzZvDnPmwCOPMGrZHCZ++BdijuRVb1iRADF8+HB+//vfH3c5H7xPxCvp2KNvSz5Ct7TP0a21PPzww6SlpZGWlkZ6ejp33HEHL730UtEl5W3bttGtWzeWLFlSarZf//rXjB07luXLl/Paa6+Rm5tb9FrxR+/6m7u42NhYrrzySl5++WVuvPFGZs+ezTfffMO8efNYuHAhS5cupUePHkXvGR0dXXSeiIiIon8GERERx/3+Jd+rtPcurrR/lhV5tsx1113HypUrWbBgAb/73e/Yvn07AIWFhSxcuLDon//WrVuJi4tj3Lhx/Otf/+Lw4cOce+65rFmzhqioKAoLC4vOWfyfc3VQ4cspiSnI5+UZf4ODB70T9Cq6fGdkJDzxBPcNu5/zNi/n1RlPQp5KX0Lf7bffzqOPPkr37t2P2963b9+iS7fffPMNTZo0oX79+mWeJy4ujv379xf9fOmllzJx4sSi2e9bt25lx44djBkzpqiEWrZsyQMPPMCTTz5ZNIItLCzkH//4BwB79+4t+qz9rbfe8uv38Sf3Dz/8wO7duwHIz89n1apVtGvXjr1799KoUSPq1q3LmjVr+PHHH/16z+Lmzp3Lrl27OHz4MDNmzOCCCy6o8DnOPvtsvv32W3bv3k1BQUHRFYuTOe+887jpppuKnlZ4ySWX8OKLLxa9npaWBsCGDRvo3r07Dz30EL1792bNmjW0a9eOVatWkZeXx969e/nqq69KfY/o6GiOHDlS4d+nJF3Sl1PyyNcT6P7LBvjkE/B9hlUZH585gJiCfJ768kW47jp4/32oodm7Ii60bt2a3/72tydsf+yxx7jttttISkqibt265RZufHw8F1xwAWeeeSZDhw7lmWeeYfXq1Zx33nmAd0T97rvvctpppx13XFJSEs8//zwpKSkcOnQIYwzDhg0rynDNNdfQqlUrzj33XDZt2lTu7+NP7g0bNvC///u/WGspLCxk2LBhXHXVVeTn5/Pqq6+SlJRE586dOffcc8t9v5IuvPBCbrrpJtLT07n++utPejm/LK1ateKRRx7hnHPOoWXLliQmJh73kURZHnroIXr27MkjjzzC+PHjGTNmDElJSRQUFNC3b19effVVnn/+eb7++msiIyNJTExk6NChxMTEcO2115KUlETHjh2LPoYpafTo0SQlJdGzZ89T+hxfj8eVShszYhwvzXyaN/qM5IkBd/p9XGm3Lh27PermJZ/y13mvwX33gW+0IVJVwvXxuKFu0qRJpKamHjeyrqwDBw4QGxtLQUEBV1xxBbfffjtXXHFFFaSsHhV5PK4u6UvlbN/O3774J/9p2Zmn+91aZad9u9f/wK9/Dc89B1OnVtl5RUT88dhjj5GcnMyZZ55J+/btGTlypOtIVUaX9KVy/vQnahfkc/+w+ymIrNy/RmUuevLss95b+u64A7p39y7WIyJShltvvZVbb721Ss717LPPVsl5ApFfI3xjzBBjzFpjTLoxZlwpr8cYY6b5Xl9kjEko9trDvu1rjTGXFts+0RizwxizosS5phlj0nxfGcaYNN/2BGPM4WKvvVrZX1pO0dKlMGECb/ccRkbjyq8QVqZatWD6dKhfH668Eg4dqvr3EBEJM+UOzYwxkcBLwGDAA/xkjJlprV1VbLc7gN3W2g7GmFHA08B1xphEYBTQDWgJzDPGdLLWHgUmAS8Cbxd/P2vtdcXe+/8Be4u9vMFam1zxX1OqjLXeRXMaNWL8BSnl719ZLVvCe+/BgAHwyCPw/PNFL+mxvHIqrLXl3rIlEgwqOgfPnxH+2UC6tXajtTYfmAqMKLHPCODYlMwPgIHG+1/UCGCqtTbPWrsJSPedD2vtd8Cust7Ud/y1wJQK/D5S3T77DObPh8ceY1/t2Op9r4sv9q65P348LFhQve8lYaF27drk5ORU+H8oRQKNtZacnJyiBX/84c+Hr62AzGI/e4BzytrHWltgjNkLxPu2/1jiWH+vAV8E/GKtXV9sW3tjzM/APuCP1lq1QE2y1jva7twZ7r4b/jSn+t/zqafg88/httu8HyWUseiHiD9at26Nx+MhOzvbdRSRU1a7du0KrdjnT+GXdu2r5J/HZe3jz7FlSeH40X0W0NZam2OM6QXMMMZ0s9buOy6IMaOB0QBt27b1863EL3PmwIoV8NZbNXePfGwsTJwI/fvDH//onb0vUknR0dHHLRMrEk78KXwPUPyZf62BbWXs4zHGRAEN8F6u9+fYE/jOcSVQ9GQHa20ekOf7fokxZgPQCTjuRntr7evA6+C9D7/8X0/89o9/eNfBHzWqWt/mhM/o+/XzXlH45z/h9tur9b1FREKVP4X/E9DRGNMe2Ip3Et71JfaZCdwCLASuBuZba60xZibwnjHmH3gn7XUEFvvxnoOANdZaz7ENxpimwC5r7VFjzOm+c23041xSSccV743tvCP8J5/0zqKvovP67fHHvTP3f/MbOPt3oElXIiIVUu6kPWttATAW+BJYDUy31q40xvzVGDPct9sEIN4Ykw7cD4zzHbsSmA6sAr4Axvhm6GOMmYL3D4TOxhiPMeaOYm87ihMn6/UFlhljluKdGHi3tbbMSX9Sxf7xD6hbF371KzfvHx8PTzwB33zDsDXfu8kgIhLE/FoxxVo7G5hdYtujxb7PBa4p49gngCdK2V7mPV3W2ltL2fYhUP6TDKTKNT2wGyZPhjvvBN9jI5246y547TX+8PUE5p/Rh8O1/J+dKiIS7rS0rpQrZekXcOQI3Huv2yCRkfDPf9Jy/05GL/7IbRYRkSCjpXXl5KzlqhVfeRfA6djRWYzin/u/0ul87vrpY97pqUV3RET8pRG+nFSvratpt2c73Hxz0baEcbMqN/Guijzb9ybqHMljzMLpzjKIiAQbjfDlpK5cOZ9D0THUvfJKJ+9f2h8WG+Lb8H73Qdz48yzYvBnatXOQTEQkuGiEL2WKKcjn8tUL+KLT+d4FcALICxekAAYee8x1FBGRoKDClzINSF9Mg7yDfNRtgOsoJ8iq35RJvf6Ho2+9zcA79eBEEZHy6JK+HKf4JfQ3Vs5ne2xj/t0uyWGisr12zlXc9PMsxvw4HbjbdRwRkYCmEb6UqvGhvfTfuIQZif0pjIh0HadUu+o24N3kyxix6ltYv778A0REwpgKX0o1aP0ioguPMjOxv+soJ/XG2VdyJDIK/vY311FERAKaCl9KNTj9Rzz1T2PVaYH9ZLHs2EZMOetSeOcd2LQJ+O9tgy5vHRQRCTQqfDlBnfxcLspIY27Hc4LiITWvnnMVRETAU0+5jiIiErBU+HKCizJ+pnZBPnM7nOM6il9+iWsCt90GkyZBVpbrOCIiAUmFLycYvH4Re2PqsbjNma6j+O/3v/eu9//Pf7pOIiISkFT4cpyIwqMM2LCYr8/oTUFkEN212aEDXHklvPIK9fIOuU4jIhJwVPhynJ7b1hB/eB9zO5zrOkqFJIybxci658OePVy3bK7rOCIiAUeFL8cZvH4R+RFRfHt6L9dRKiytZWcWte7GHT/NIOpoges4IiIBRYUvxxmUvoiF7ZI4EFPXdZRKef2cK2m1P5thaxa4jiIiElCC6ENaqXYZGZyxayvv9DjxOfPBck/7/DP6kN64NXekfsInAb5okIhITdIIXwBvoT/4v88B8H1CsuM0lWdNBJN6Dydpezo9t65xHUdEJGCo8KXIhZvT+CW2MenxbVxHOSUfdbuYfTH1uG3JTNdRREQChgpfADC2kPM3L+WHdmcFxep6J3OoVh2mJl3C0LU/gMfjOo6ISEBQ4QsAnbM30+TQXn5oF7yX84t7u+cwDMArr7iOIiISEFT4AsAFGWkA3hF+CPA0bM68DmfDa6/B4cOu44iIOKfCFwAu2LyUDY1bs71+E9dRqsykXsMhJwemTXMdRUTEORW+QH4+52SuCJnR/TEL23aHLl28o3wRkTCnwhdYtIh6R3L5ISG0Ch9j+L+WF8KPPzL0dj1UR0TCmwpf4KuvOGoiWNg2yXWSKvfBmQPJi4zm+rQvirYljJtV9CUiEi5U+ALffMPKZqezr3as6yRVbm+dOD7rciEjV34NBw64jiMi4owKP9wdOQKLF5PaKtF1kmrzXvJQ4vIPw9SprqOIiDijwg93P/8Mhw+T2jp0C39Jq66sbdJWk/dEJKyp8MPdDz8AkNqqq+Mg1cgYJicPhdRUWLLEdRoRESdU+OHuhx8gIYEdcfGuk1SrGd0uhjp1NMoXkbClwg9n1noL/4ILXCepdvtqxzK9wwUcnPQOsXmHXMcREalxKvxwlpEB27fD+ee7TlIj3kseSr0juYxY9Y3rKCIiNU6FH8bu/c1LAAxNPeo4Sc1Ia9GJlaedzg1pn3uvboiIhBEVfhjr7VnFvlp1WduknesoNcMY3kseQuKOTSRnrXOdRkSkRqnww1ivratJa9mZwohI11FqzCeJ/TkYXZvr0z53HUVEpEap8MPVnj10zt4c0vffl+ZATF0+7dqXYWu+p26+HpsrIuFDhR+ufvyRCGxo339fhve7D6LekVyGrfnedRQRkRqjwg9XixdTiGFpi06uk9S4Ja26sqFxK65e8ZXrKCIiNUaFH65SU9kQ35qDMXVdJ6l5xvDhmQM5J3MFbNjgOo2ISI1Q4Yer1FSWNe/gOoUzH3UbwFETAZMmuY4iIlIjVPjhaNs2yMpiefOOrpM4s71+E75PSIa33oLCQtdxRESqnQo/HKWmArAsjAsf4IMzB0JmJsyf7zqKiEi1U+GHo9RUiIhgVbP2rpM4NafTedCwoS7ri0hYUOGHmYRxs/h68mxWx7clN7q26zhO5UXV4p3255M77X263zfddRwRkWqlwg831tJ9ezrLw3jCXnEfnDmQ2gX5XL56gesoIiLVSoUfZlruz6bJob1h//n9MUtbdGJdfFuuXj7PdRQRkWrlV+EbY4YYY9YaY9KNMeNKeT3GGDPN9/oiY0xCsdce9m1fa4y5tNj2icaYHcaYFSXO9ZgxZqsxJs33dVl55xL/dc9KB9AI/xhj+KD7QHptWwNr1rhOIyJSbcotfGNMJPASMBRIBFKMMSUXYL8D2G2t7QA8BzztOzYRGAV0A4YAL/vOBzDJt600z1lrk31fs/04l/gpaft6jkREsua08J6wV9zH3QZQoHvyRSTE+TPCPxtIt9ZutNbmA1OBESX2GQG85fv+A2CgMcb4tk+11uZZazcB6b7zYa39DthVgaxlnkv81317OmubJpAXVct1lICRHduIb07vBe+8A0ePuo4jIlIt/Cn8VkBmsZ89vm2l7mOtLQD2AvF+HluascaYZb7L/o0qkENOxlqStq8P6xX2yvJB90HeBYnmznUdRUSkWvhT+KaUbdbPffw5tqRXgDOAZCAL+H8VyIExZrQxJtUYk5qdnV3OW4WZjAwa5h5ghQr/BPPPONt7T/6777qOIiJSLfwpfA/QptjPrYFtZe1jjIkCGuC9XO/Pscex1v5irT1qrS0E3uC/l+39Ope19nVrbW9rbe+mTZuW86uFmaVLAVh12umOgwSe/Kho3mt3LoemfwAHDriOIyJS5fwp/J+AjsaY9saYWngnzs0ssc9M4Bbf91cD86211rd9lG8Wf3ugI7D4ZG9mjGlR7McrgGOz+Ct8Lilh2TIKMaxt0s51koD0cbf+1D2SBzNmFG1LGDer6EtEJJiVW/i+z+THAl8Cq4Hp1tqVxpi/GmOG+3abAMQbY9KB+4FxvmNXAtOBVcAXwBhr7VEAY8wUYCHQ2RjjMcbc4TvX340xy40xy4CLgfvKO5eUL2HcLD6f/CUZjVpwuFZ4r7BXltTWiWQ2aOadvCciEmKi/NnJd2vc7BLbHi32fS5wTRnHPgE8Ucr2lDL2v+kkOUo9l/inS/YmXc4/CWsimJHYn1/Pex+ysqBFi/IPEhEJElppL0zUzT9Mu93bWdM0wXWUgDajW3/v43KnTHEdRUSkSqnww0Tn7M1EYFmtEf5JbYhvA717a7a+iIQcFX6Y6Jq9CYA1pyW4DRIMbrwRfv4ZVq50nUREpMqo8MNElx0Z7KtVF0/901xHCXyjRkFkpEb5IhJSVPhhouuOTd7RvSlt/SI5TrNmcMklMHkyxha6TiMiUiVU+OHAWrpkb2K1HpjjvxtvhMxMzs7UZX0RCQ0q/HCQkUFc/mHWNFXh+23kSIiN5YqVX7tOIiJSJVT44WDZMgCN8P2UMG4WCX/9mg8TzuayNd8TU5DvOpKIyClT4YeDpUu1pG4lfNRtAPXzDzEwXSs4i0jwU+GHg2XLtKRuJSxs253tsY11WV9EQoIKPxwsW8ZarbBXYYURkXzW5SL6bVxC/Vw9QU9EgpsKP9Tl5sKGDazT5fxK+SSxP7UKCxi69gfXUURETokKP9StWweFhaxv0sZ1kqC0vHkHNjVqwfDV37qOIiJySlT4oW7VKgDWN2nrOEiQMoaZXftz3ublsG2b6zQiIpWmwg91q1ZBRASbGrVynSRozUzsSwQWpk93HUVEpNJU+KFu1Sro0IH8qGjXSYLWhvg2rGh2Brz3nusoIiKVpsIPdatWQWKi6xRB75Ou/eCnnyA93XUUEZFKUeGHsI4PzODI2nW8+Est11GC3mddL/J+M2WK2yAiIpWkwg9h7XZnEV14lPXxmqF/qrLqN4W+fb2X9a11HUdEpMJU+CGs484tAKRrhn7VSEmBNWtg6VLXSUREKkyFH8I65mRSiGFDY83QrxJXXw1RUZq8JyJBSYUfwjru3EJmw2bkRmsN/SrRpAlceilMnQqFha7TiIhUiAo/hHXIydTn91UtJQUyM+EHLbUrIsFFhR+qCgo4fZdHn99XtREjoE4dzdYXkaCjwg9VGzcSc7SA9fEq/CoVGwvDh3tX3TtyxHUaERG/qfBDVdEa+rqkX+Wuvx5ycmDuXNdJRET8psIPVb7C39C4teMgIejSS6FhQ13WF5GgosIPVWvWsC2uCQdj6rpOEnpiYry36H38MRw65DqNiIhfVPihat06Nur+++qTkgIHD8Jnn7lOIiLiFxV+KLIW1q5lkwq/SiWMm0XCuFneH/r1gxYttAiPiAQNFX4o2rkT9uzRCL86RUbCqFHw+eewe7frNCIi5VLhh6J16wDY1EiFX61SUiA/Hz76yHUSEZFyqfBD0dq1ABrhV7fevaFDB13WF5GgEOU6gFSDdesgOhpPg9NcJwlJRZ/jAxkpKfD445CV5f1MX0QkQGmEH4rWrYMOHSiMiHSdJPSlpHgnSU6f7jqJiMhJqUP2HOYAACAASURBVPBD0dq10KmT6xRhIeGtjaw6rT0/P/2K6ygiIielwg8xpz84k7y163g1S6P7mjKzaz96ZK2FjRtdRxERKZMKP8S03JdNzNECNmpJ3Rrzade+3m+mTnUbRETkJFT4IeaMXVsB2NS4peMk4WNrg9NIbdVVa+uLSEBT4YeY9kWFr1vyatLMrn1hxQrvl4hIAFLhh5j2u7eyL6YeO+s2dB0lrMzuciFERGiULyIBS4UfYk7P2crGxi3BGNdRwsrOeo1g4EDv5/jWuo4jInICFX6Iab97q5bUdSUlxTtTf/Fi10lERE6gwg8lhw/Tel+2ltR15YoroFYtXdYXkYCkwg8l69cDmrDnTMOGcNllMG0aHD3qOo2IyHFU+KHkWOE30i15zqSkwPbt8O23rpOIiBxHhR9KNmwAYLMK353LL4fYWF3WF5GA41fhG2OGGGPWGmPSjTHjSnk9xhgzzff6ImNMQrHXHvZtX2uMubTY9onGmB3GmBUlzvWMMWaNMWaZMeZjY0xD3/YEY8xhY0ya7+vVyv7SISs9nZw69TkQU9d1kvBVty6MGAEffgj5+a7TiIgUKbfwjTGRwEvAUCARSDHGJJbY7Q5gt7W2A/Ac8LTv2ERgFNANGAK87DsfwCTftpLmAmdaa5OAdcDDxV7bYK1N9n3d7d+vGEY2bGBzIz2i1bmUFNi9G7780nUSEZEi/ozwzwbSrbUbrbX5wFRgRIl9RgBv+b7/ABhojDG+7VOttXnW2k1Auu98WGu/A3aVfDNr7RxrbYHvxx8BLQrvrw0b2NxQhe/c4MHQuLEu64tIQPGn8FsBmcV+9vi2lbqPr6z3AvF+HnsytwOfF/u5vTHmZ2PMt8aYiypwntCXlweZmWxR4btXqxZcfTV88gkcPOg6jYgI4F/hl7ZkW8mlxMrax59jS39TY/4AFACTfZuygLbW2h7A/cB7xpj6pRw32hiTaoxJzc7O9uetQkNGBhQWkqFL+oEhJQUOHYJPP3WdREQE8K/wPUCbYj+3BraVtY8xJgpogPdyvT/HnsAYcwtwOXCDtd51Sn0fC+T4vl8CbAA6lTzWWvu6tba3tbZ306ZN/fj1QsSxGfoa4QeGiy6Cli11WV9EAoY/hf8T0NEY094YUwvvJLyZJfaZCdzi+/5qYL6vqGcCo3yz+NsDHYGTrjtqjBkCPAQMt9YeKra96bEJf8aY033n2uhH/vDgK/wtjZo7DiIAREbCddeR/9lsku6dRsK4Wa4TiUiYK7fwfZ/JjwW+BFYD0621K40xfzXGDPftNgGIN8ak473cPs537EpgOrAK+AIYY609CmCMmQIsBDobYzzGmDt853oRiAPmlrj9ri+wzBizFO/EwLuttSdM+gtHCeNm8eZbczlQq46ekhcgEsbNYnhOG2oVFjBk7b9dxxERIcqfnay1s4HZJbY9Wuz7XOCaMo59AniilO0pZezfoYztHwIf+pM3HLXds50tDZvrKXkBZFnzjmQ0bMHw1d8y/axLXMcRkTCnlfZCRLvdWfr8PtAYw8yufTlvy3KaHtjtOo2IhDm/RvgS2CIKj9Jm73bmdTjbdZSwVtrn9DMT+/GbhdMYtmYBcGPNhxIR8dEIPwQ0P5BDzNECraEfgNKbtGV10wSGr9bDdETELRV+CGi3ezsAmxtqhn4gmpnYj57b1sKmTa6jiEgYU+GHgLZ7sgDYokV3AtKnXft6v5k61W0QEQlrKvwQkLA7i/yIKLbFNXEdRUrhadCMJS27aBEeEXFKhR8C2u7JIrNhMwojIsvfWZyYmdgPli+HlStdRxGRMKXCDwHtjt2DLwFrVpcLISJCo3wRcUaFH+yspe3uLDI0Qz+g7azXCAYM8Ba+9ev5USIiVUqFH+x27aJ+/iEyG2iEH/BSUmDjRvjpJ9dJRCQMqfCDne9Wr8yGzRwHkfIkLatHXmQUE8Y86TqKiIQhFX6wO1b4DVT4gW5f7Vi+Pb03l69ZAEePuo4jImFGhR/sfIXvUeEHhZld+9LswC747jvXUUQkzKjwg92mTeyuHceBmLquk4gf5nU4m4PRtTVbX0RqnAo/2G3apM/vg0hudG3mdjwHPvgA8vNdxxGRMKLCD3abNunz+yAzs2s/2L0b5sxxHUVEwogKP5gVFkJGhgo/yCxo34M9tWOZ8dCzrqOISBhR4QezrCzIz8ejVfaCypHIaGZ3voDB6xfBoUOu44hImFDhB7OMDEC35AWjT7v2o96RXPj0U9dRRCRMqPCDme7BD1qL2nTjl9jGmq0vIjVGhR/E/t9rXwCwtcFpjpNIRRVGRPJZl4vg889hzx7XcUQkDKjwg1ibvb/wS2xj8qJquY4ilTCza1/vrXkffeQ6ioiEARV+EGuz9xddzg9iS1t0gjPO0GV9EakRKvwg1maPCj+oGQOjRsH8+bB9u+s0IhLiVPjB6sgRWuzfqcIPdtdf711PYdo010lEJMSp8INVZiaRtlDL6ga7xETo2RPefdd1EhEJcVGuA0glFT0lT4vuBL0bb4T774c1a6BLFwASxs0qejnjqWGukolICNEIP1gdW3RHI/zgN2oURETA5Mmuk4hICFPhB6tNmygwEWTFNXGdRE5VixYwaJD3sr61rtOISIhS4QerTZvIqt+UoxGRrpNIVbjxRu9Vm3//23USEQlRKvxglZGBRyvshY4rruBQdAzvjn3iuM/vRUSqiibtBavNm/E06uo6hZyi4uX+fMdzuXzNAv4yaDRHIqMdphKRUKQRfjDKz4dt29jaoKnrJFKFZiReTMPcA/TfuMR1FBEJQSr8YOTxgLVsra9L+qFkQfse7KzbgJErv3YdRURCkAo/GG3eDMDW+hrhh5KjEZF82rUvg9IXUz/3gOs4IhJiVPjB6Fjha9JeyPmo2wBijh5hyFrN1heRqqXCD0a+ws+K0wg/1Cxv3oENjVtzxSpd1heRqqXCD0abN0OLFuRHaSZ3yDGGj7v157wty2m5b4frNCISQlT4wWjzZmjXznUKqSafJPYHYPiq79wGEZGQosIPMgnjZpHxn9V8ukej+1CV2bA5P7VK5IqV87XUrohUGRV+kDG2kBb7szVhL8TN6Nafzju3kLhjk+soIhIiVPhBpsnBPcQcLcCje/BD2qwuF5IfEaV78kWkyqjwg0zrvd6JXBrhh7Y9derzzRm9GbH6Wzh61HUcEQkBKvwg08o3c1uL7oS+jxP70+zALvhao3wROXUq/CDz38LXCD/Uze9wNvtq1YV333UdRURCgAo/yLTam82e2rEcjKnrOopUs7yoWszuciF8+CEcOuQ6jogEORV+kGm1b4dG92FkRrf+cOAAfPKJ6ygiEuRU+EGm1d4dmrAXRha1OdO7yNJbb7mOIiJBzq/CN8YMMcasNcakG2PGlfJ6jDFmmu/1RcaYhGKvPezbvtYYc2mx7RONMTuMMStKnKuxMWauMWa97/828m03xpjxvnMtM8b0rOwvHbSs9Y3wNWEvXFgTATfdBHPnwtatruOISBArt/CNMZHAS8BQIBFIMcYkltjtDmC3tbYD8BzwtO/YRGAU0A0YArzsOx/AJN+2ksYBX1lrOwJf+X7G9/4dfV+jgVf8+xVDyJ49xOUfVuGHm1tugcJCTd4TkVPizwj/bCDdWrvRWpsPTAVGlNhnBHDsmuMHwEBjjPFtn2qtzbPWbgLSfefDWvsdsKuU9yt+rreAkcW2v229fgQaGmNa+PNLhoxjj8XVZ/jhpUMHuOAC72V9LbUrIpXkT+G3AjKL/ezxbSt1H2ttAbAXiPfz2JKaWWuzfOfKAo61W2XOFVqOFb4+ww8/t9wCq1dDaqrrJCISpPwpfFPKtpLDjLL28edYf/l1LmPMaGNMqjEmNTs7u5JvFaC2bAE0wg9L114LtWvDpEmuk4hIkPKn8D1Am2I/twa2lbWPMSYKaID3cr0/x5b0y7FL9b7/e+yh4H6dy1r7urW2t7W2d9OmIfZZd2YmeZHR5NRt4DqJ1LQGDeCKK2DKFMjLc51GRIKQP4X/E9DRGNPeGFML7yS8mSX2mQnc4vv+amC+tdb6to/yzeJvj3fC3eJy3q/4uW4BPim2/WbfbP1zgb3HLv2HDY+HrLgmYEq72CEh75ZbYPdu+Owz10lEJAiVW/i+z+THAl8Cq4Hp1tqVxpi/GmOG+3abAMQbY9KB+/HNrLfWrgSmA6uAL4Ax1tqjAMaYKcBCoLMxxmOMucN3rqeAwcaY9cBg388As4GNeCf+vQHcc0q/eTDKzCSrfhPXKcSVQYOgZUtd1heRSonyZydr7Wy8hVt826PFvs8Frinj2CeAJ0rZnlLG/jnAwFK2W2CMP3lDlsdDVlx71ynElchI7z35zz4Lv/wCzZq5TiQiQUQr7QWLwkLYupXtcfGuk0gNSxg3i4Rxs7w/3HKL93G5773nNpSIBB0VfrDYsQOOHGFbXIhNRJSK6doV+vTRZX0RqTAVfrDweADYHqfP8MPerbfCsmWQluY6iYgEERV+sPAVfpYu6cuoUVCrlh6oIyIVosIPFpneRQaztI6+NG4Mw4d719bPz3edRkSChAo/WHg8UKsWu+rUd51EAsCtnAk7d3L3dY+5jiIiQUKFHywyM6F1ay26IwB8174HWbHxXLtsrusoIhIkVPjBwuOBNm3K30/CQmFEJB90H0S/Tf+BrVtdxxGRIKDCDxYej3eEL+LzfvdBRNpCnkl5+L/36YuIlEGFHwwKC1X4coItjVqwsG13rl0+F2MLXccRkQCnwg8G2dlw5Igu6csJpiVdQrs92zknc4XrKCIS4FT4QeDyh6YCcNf87Y6TSKD5otN57KtVV5P3RKRcKvwg0HJfNoD30bgixeRG12ZmYj8uW/sD7N3rOo6IBDAVfhBovn8noMKX0k1LuoTaBfkwZYrrKCISwFT4QaDF/hzyIqPYVVeL7siJljfvwOqmCTBhgusoIhLAVPhBoMX+bH6Jjcca/b9LSmEM05MGQ2qq96E6IiKlUIMEgRb7c7SGvpzUjMT+EB0NEye6jiIiAUqFHwSa79+pp+TJSe2u2wBGjvQ+UCcvz3UcEQlAKvxAV1hI8/072a4Je1KeO+6AnByYMcN1EhEJQCr8QLdzJzFHC9imwpfyDB4M7drB66+7TiIiAUiFH+g8HgCN8KV8ERFw110wfz6sX+86jYgEGBV+oMvMBGCbJu2JP26/HSIj4Y03XCcRkQCjwg90RSN8TdoTP7RoAcOHw5tvavKeiBwnynUAKYfHQ35EFDl1G7hOIo75/QjcX/0KPv7YO3nvuuuqN5SIBA2N8ANdZibb47TojlTA4MGQkACvveY6iYgEELVIoPN4tIa+VMyxyXtffw3r1rlOIyIBQoUf6DwezdCXirvtNoiK0uQ9ESmiwg9k1npH+PVV+FJBxybvTZqkyXsiAqjwA9vOnZCXp0v64peEcbOKvgAYPdr779DHH7sNJiIBQYUfyHz34OuWPKmUwYOhfXutvCcigG7LC2y+e/C3xWnRHamYY6P8e9pcxINfv+2dvNepk+NUIuKSRviBTMvqyil6v/tg7+Q9jfJFwp4KP5BlZkJ0NDvradEdqZzs2Ebex+a++SYcPuw6jog4pMIPZB4PtGqlRXfk1IwZA7t2wdSprpOIiENqkkDm8UDr1q5TSLDr1w+6dYOXXvLe6ikiYUmFH8gyM1X4cuqMgXvugSVLYPFioJRb+EQk5KnwA5Vv0R3atHGdRELBTTdBXJx3lC8iYUmFH6hycrwrpGmEL1UhLg5uvhmmTYPsbNdpRMQBFX6g8i26o8KXKnPPPZCfDxMmuE4iIg6o8AOV7x58XdKXKpOYCBdfDK++SkThUddpRKSGqfAD1bHC1whfqtKYMbB5MwM2pLpOIiI1TIUfqDIzvSukNWvmOokEueNm448YAa1acfN/PnMbSkRqnAo/UHk8eOo2JuGRz10nkVASFQW/+hV9M36m/a6trtOISA1S4Qcqj0ePxZXqcddd5EdEcePPs10nEZEapMIPVJmZZNVX4Us1aN6cLzqfzzXL51EnP9d1GhGpISr8QORbdEcjfKkuk3r+D/XzDnLVyvmuo4hIDYlyHUBKsWsX5OayPS7edRIJIccto9uqC2ktOnJb6kwo/CdE6G9/kVDn13/lxpghxpi1xph0Y8y4Ul6PMcZM872+yBiTUOy1h33b1xpjLi3vnMaYBcaYNN/XNmPMDN/2/saYvcVee/RUfvGA5lt0Z1tcU8dBJGQZw8TeIzhjlwe++MJ1GhGpAeUWvjEmEngJGAokAinGmMQSu90B7LbWdgCeA572HZsIjAK6AUOAl40xkSc7p7X2ImttsrU2GVgIfFTsfRYce81a+9dK/9aBzncPvkb4Up0+73wB22Mbw/PPu44iIjXAnxH+2UC6tXajtTYfmAqMKLHPCOAt3/cfAAONMca3faq1Ns9auwlI952v3HMaY+KAAcCMyv1qQcxX+PoMX6rTkcho3u55OcydCytXuo4jItXMn8JvBWQW+9nj21bqPtbaAmAvEH+SY/055xXAV9bafcW2nWeMWWqM+dwY082P7EEnYdwsXnz7a45ERLKzXkPXcSTEvZc8BGrXhhdecB1FRKqZP4VvStlm/dynotuLSwGmFPv5P0A7a+1ZwD8pY+RvjBltjEk1xqRmB+lTwVrs38kvsY0pjIh0HUVC3J469b1P0XvnHdi503UcEalG/hS+Byj+BJfWwLay9jHGRAENgF0nOfak5zTGxOO97F80rdhau89ae8D3/Wwg2hhzwjVva+3r1tre1treTZsG56S3Fvt2sl2X86Wm/Pa3kJsLr73mOomIVCN/Cv8noKMxpr0xphbeSXgzS+wzE7jF9/3VwHxrrfVtH+Wbxd8e6Ags9uOc1wCfWWuLVgUxxjT3zQvAGHO2L3tOxX7d4NB8/059fi81JzERLr0UXnrJ+/hcEQlJ5Ra+7zP5scCXwGpgurV2pTHmr8aY4b7dJgDxxph04H5gnO/YlcB0YBXwBTDGWnu0rHMWe9tRHH85H7x/SKwwxiwFxgOjfH9UhBZrabE/R4UvNeveeyEri99e9cjx9+uLSMjwa+Ed3yX02SW2PVrs+1y8o/LSjn0CeMKfcxZ7rX8p214EXvQnbzBrmLufOgV5uqQvNeuSS6BLF+5I/YRPEvu7TiMi1UAr7QWYFvu9E6e2aR19qSHHRvTXtxvIk2teovfWVcDlbkOJSJXTepoBpvl+77QEjfClpn3U7WJ2147jrsUfu44iItVAhR9gWu7z3kqYpVX2pIblRtfm7Z7DGLx+Eaxd6zqOiFQxFX6Aab4/hwITQXa9Rq6jSBh6u+fl5EdFw7PPuo4iIlVMhR9gvIvuxGvRHXEip15D3u8+CN5+G7KyXMcRkSqkwg8wLfZn66E54tS/+oyEggIYP951FBGpQir8ANN8fw5Z9YNzhUAJDZsbtYSrroJXXoF9+8o/QESCggo/kFhLi/07NWFP3HvwQdi7F15/3XUSEakiKvxAsns3dY/kkRWnEb441rs3DBgAzz2n5XZFQoQKP5B4PIBuyZMA8eCDsG0bvPee6yQiUgVU+IHEV/hadEcCwiWXQFISPPMMFBa6TiMip0iFH0gyMwEtqysBwhjvKH/VKphd6mMvRCSIqPADicejRXcksFx7LbRtC08/7TqJiJwiPTwnkHg87IhtrEV3xLnij8i9teMQHvvqda654Wnen/yQw1Qicio0wg8kmZlk6fN7CTBTz7qE7LoN+fW/p7mOIiKnQIUfSDweFb4EnNzo2vzr7JH0zfgZFi1yHUdEKkmFHyisBY9Hy+pKQHo3+TJ2146Dxx93HUVEKkmFHyj27IGDB7WsrgSkgzF1mdBnBHz2Gfz8s+s4IlIJKvxAUbToji7pS2B6q9f/QIMGGuWLBCkVfqDw3YOvS/oSqPbH1IPf/AY++ghWrHAdR0QqSIUfKHwj/G1aR18CWPLerhyoVQeefNJ1FBGpIBV+oPB4ICKC7FgtuiOBa0+d+rzb4zKOTp3GxaNfP+5+fREJbCr8QJGZCS1acFSL7kiAe6PPFeRHRjNm4XTXUUSkAlT4gcLjgTZtXKcQKVdOvYa8lzyEkSu/ps2e7a7jiIifVPiBwuOB1q1dpxDxy2tnX8nRiEjGavU9kaChwg8ACQ99xsENGUzIOOI6iohfdsTF826Py7hqxVewfr3rOCLiBxV+AKifd5B6R3LZpnvwJYi8cu7V5EdFw2OPuY4iIn5Q4QeA5vt3ArBdhS9BZGe9Rkzq9T8wZYruyxcJAir8ANByn7fws+qr8CW4vHb2VRAXB3/+s+soIlIOFX4AODbC17K6Emz21omD++/3rr63ZInrOCJyEir8ANBifw5HTQQ7Yhu7jiJScffeC40bw6OPuk4iIiehwg8ALfZns6NeIy26I8GpQQN48EGYPRv+/W/XaUSkDCr8ANB8f44m7EnQShg3i66/dCC7bkP4059cxxGRMqjwA0CL/TvJ0lPyJIgdrlWbl8+7BubP936JSMBR4btmrbfw6+speRLc3kseSlZsPP+56R4SHvrMdRwRKUGF79q+fcTmH9YIX4JeXlQtXrgghZ7b1nLp+oWu44hICSp81zweQIvuSGh4P2kw6+Pb8NA3k+CIlooWCSQqfNcyMwHYFqdL+hL8jkZE8rf+t3H67m3wxhuu44hIMSp8146N8Ovrkr6Ehvln9OHHNmey84FH6Hbf+67jiIiPCt81j4dCDDvqadEdCRHG8OTFt9Pk0F5+tehD12lExEeF71pmJjtiG1EQGeU6iUiVWdaiEzO79uWun2bAtm2u44gIKnz3PB5N2JOQ9Ezfm4ksPKoH64gECBW+a5mZemiOhKTMhs15u+cwmDgRVq50HUck7KnwXfN4VPgSsl48/zrv43MfegjwLsN77EtEapYK36V9+2D/fhW+hKw9derztx5XwKxZpKQ86TqOSFhT4bvkuwd/u1bZkxA2qddwMhs048/zXvd+pu+jkb5IzVLhu+S7B3+b1tGXEJYXVYvHL76DLjs3c33a567jiIQtFb5LWlZXwsSXnc7j+3Zn8bsF79Lw8D7XcUTCkl+Fb4wZYoxZa4xJN8aMK+X1GGPMNN/ri4wxCcVee9i3fa0x5tLyzmmMmWSM2WSMSfN9Jfu2G2PMeN/+y4wxPU/lFw8ImZlgDL/EatEdCXHG8JeBo4nNO8TvFrzrOo1IWCq38I0xkcBLwFAgEUgxxiSW2O0OYLe1tgPwHPC079hEYBTQDRgCvGyMifTjnA9Ya5N9X2m+bUOBjr6v0cArlfmFA4rHA82ba9EdCQvrm7bjnZ7DuD7tC7ru2Og6jkjY8WeEfzaQbq3daK3NB6YCI0rsMwJ4y/f9B8BAY4zxbZ9qrc2z1m4C0n3n8+ecJY0A3rZePwINjTEt/MgfuDweaN3adQqRGvPchTewt3Ysj817Hax1HUckrPhT+K2AzGI/e3zbSt3HWlsA7AXiT3Jseed8wnfZ/jljTEwFcgSXzExo08Z1CpEas692LM/0vZlzMldw+ZoFruOIhBV/Ct+Usq3kn+Zl7VPR7QAPA12APkBj4KEK5MAYM9oYk2qMSc3Ozi7lkMCxLz2DNzfrmeESXqYlDWZFszN4+Os3qZOf6zqOSNjwp/A9QPFhaGug5NMwivYxxkQBDYBdJzm2zHNaa7N8l+3zgDfxXv73NwfW2tettb2ttb2bNg3g29327aN+/iEtuiNhpzAikscGjabV/mzuXvSB6zgiYcOfwv8J6GiMaW+MqYV3Et7MEvvMBG7xfX81MN9aa33bR/lm8bfHO+Fu8cnOeexzed8cgJHAimLvcbNvtv65wF5rbValfutA4LslT4Uv4Si1dTdmJPbj7kUfcPHo17UIj0gNKLfwfZ/JjwW+BFYD0621K40xfzXGDPftNgGIN8akA/cD43zHrgSmA6uAL4Ax1tqjZZ3Td67JxpjlwHKgCfC4b/tsYCPeiX9vAPec0m/u2rHCr6/Cl/D0xMV3khcVw+NzXtIEPpEa4Nf9YNba2XgLt/i2R4t9nwtcU8axTwBP+HNO3/YBZZzHAmP8yRsUtOiOhLns2EY83e8WnpjzMles/JqPzyz1P30RqSJaac+VzEwK0aI7Et7eSx7Cf1p25o/z/6UV+ESqmQrfFY+HnfUaciQy2nUSEWesieDhIb+mft5BHv76TddxREKaCt8Vj0cT9kSAtU0TmNBnJNctnwvffec6jkjIUuG7kpmpCXsiPi+cn0Jmg2akX3EDnX4/QzP2RaqBCt8VjfBFihyuVZs/Df5fOuzyMHrxh67jiIQkFb4L+/fD3r1sj4t3nUQkYHxzRm8+63whv/73NNrv2uo6jkjIUeG7kOl9JMC2uABeCVDEgb8MGk1uVC3+PvsFOHrUdRyRkKLCd2HLFgC21VfhixSXHduYvwwaTZ+tq+Cf/3QdRySkqPBdODbCV+GLnOCjbgOYd0YfeOQRWL/edRyRkKHCd2HLFoiIYIcW3RE5kTE8culYiImB227TpX2RKqLCdyEzE1q14mhEpOskIgFpR1w8vPAC/PADjB/vOo5ISPBrLX2pYlu2QNu2rlOIBLabboL33yf3wXEMXV2PTY1bkfHUMNepRIKWRvgubNkCbdq4TiES2IyB114jLzKav89+gYhCXdoXORUq/JpWWOh9Up5G+CLla9myaNb+bakzXacRCWoq/JqWnQ15eRrhi/jpo24DmNvhHB787i1Ytsx1HJGgpcKvab578DXCF/GTMTw09DfsrR0HKSlw+LDrRCJBSYVf03z34KvwRU4uYdysoofo7KrbgN8Nuw9WrYIHHnCcTCQ4qfBr2rERvi7pi1TIgvY94b774KWX4LPPXMcRCTq6La+mZWZC3brQWIvuiFTY3/4G8+fDbbfR57rnyI5tBKDb9UT8oBF+DZs1axHptRuT8PBs11FEgk9MnCDbSQAAGYpJREFUDLz3Hhw4wLOzn8PYQteJRIKGCr+GtdqXrTX0RU5FYiL84x/02/Qfbkv91HUakaChS/o1rMX+naxpmuA6hkhQOjaJD9uGNzqcw0PfvsmiNt3+u70YXeYXOZ5G+DUpL49mB3aRFdfEdRKR4GYMDw79DTvrNuKVGX+jfu4B14lEAp4KvyZt3QrosbgiVWF33QaMGTmO5vtz+H+z/qHP80XKocKvSb578Leq8EWqRFrLzjw+4A4Gpy/m7kUfuo4jEtBU+DXJdw9+lgpfpMq83fNyZnbty++/e4fzNmvpXZGyqPBrkq/wt+kzfJGqYwzjhvyaTY1aMn7m3zltf47rRCIBSYVfkzIzyalTn7zoGNdJRELKoVp1uPuKR6h7JJcXZz5N1NEC15FEAo4KvyZt2aIJeyLVJL1JWx4e8mvO9qzi4W/edB1HJOCo8GuSCl+kWs1M7MfEXsO5I/UTmDjRdRyRgKLCrynWQkYGngbNXCcRCWlPDPj/7d15eBRV1sDh3yEhCYsQEgIBgjRLUAgKhugIKAoii8gy44YrjjAwzjCDCyroDIKi4izyKePoIC4oKuBKFJVRwIURkU0gIQQCBEmQPSSGYELgfn9UIU3sJB2S7upOn/d5+kn17eqqc73Yp27VrVuj+NJ1Afz+97B8udPhKBUwNOH7y8GDcOQIOY2bOR2JUrXa8TphjBv2ALRtC7/5Dezc6XRISgUETfj+kp0NwK7G8c7GoVQIKIhqCKmpUFICQ4fS+Z63PU6/q1Qo0YTvLzt2AGgPXyl/OeccWLAA0tKY8eE/dSY+FfI04fuL3cPP1YSvlP/07w8zZjBg6zfc+9Vcp6NRylGa8P0lOxuaNOHHyAZOR6JUaPnTn3ij6wDGrVgAL77odDRKOUYTvr9kZ4PL5XQUSoUeESZfeSdftE2GsWNhkV7LV6FJE76/aMJXyjGlYeHcOXwSdOsG118P337rdEhK+Z0mfH+w78HXhK+Uc4oi6lm9+/h4GDwYtm51OiSl/Crc6QBCQfL4N1lbVMSUDUcgxelolAoNHm/Da94cPvkEevaEgQPh66+tMqVCgPbw/SAhfy8Au6L1h0UpxyUmWj39PXusnn5hodMRKeUX2sP3g4T8fQA6ra5SDnPv9fe56j5eeOdRVnbpRa+Mb6BePQcjU8r3tIfvByd7+LmN9B58pQLFsvYXMmHw3fTYuRGuuQaKi50OSSmf0oTvB63z95IXdRaFkfWdDkUp5eb9pD5MGjgOPv4YRoyAY8ecDkkpn9GE7wcJ+Xt1Sl2lAtT8rgNg5kx4/3247TY4ftzpkJTyCb2G7wcJ+fvIim3tdBhKqfKMGwdHj8L990NUlDUjXx3tD6naRRO+rxlDQv4+Pm/X3elIlFIVue8+KCqCKVMgMhL+/W9N+qpW0YTva/v3U6+0WEfoKxUMJk+Gn36C6dOt6/mzZkFYmNNRKVUjvDp8FZGBIpIpIlkiMtHD55EiMt/+fKWIuNw+m2SXZ4rIgMq2KSKv2+VpIvKSiNS1yy8XkXwR+c5+Ta5Oxf3GfkreLk34SgU+EXj8cXj4YXjpJRaedwUd7lvodFRK1YhKe/giEgY8C1wJ5ACrRCTVGLPJbbVRQJ4xpoOIjACeBG4Qkc7ACCAJaAl8JiId7e+Ut83XgVvsdd4ARgPP2e+/MsZcfebVdYCd8HXQnlKBy/3+/Ozpg2HKFJ74YieTPn+FqNJiOhpDSXjdU58rFYS86eFfBGQZY7YbY0qAecCwMusMA+bYy28DV4iI2OXzjDHFxpgdQJa9vXK3aYz5yNiAb4GE6lXRYXbC13vwlQou//nVtUzuN5YBW79h1rvTiDr2k9MhKVUt3lzDbwXscnufA/yqvHWMMaUikg/E2uXflPluK3u5wm3ap/JvBca7FfcQkfXAbmCCMSa9bLAiMgYYA3D22Wd7UT0f27aNg/UacUTvwVcqKLj39l/tPoSjdSN58uOZvPz2VEb/5q8e19NevwoG3vTwxUOZ8XKdqpa7+zfwpTHmK/v9WqCNMaYrMBN431OwxphZxpgUY0xKXFycp1X8a+tWspu0dDoKpdQZeuv8/tw1ZAIX7kpn3puTrDn4lQpC3iT8HMD9JvIErB62x3VEJBxoDByq4LsVblNEHgbigHtOlhljCowxhfbyR0BdEWnqRfzOysoiu0kLp6NQSlVDaufLGH3NZNodyoUePWDzZqdDUqrKvEn4q4BEEWkrIhFYg/BSy6yTCoy0l68FltrX4FOBEfYo/rZAItZ1+XK3KSKjgQHAjcaYEyd3ICLx9rgAROQiO/aDZ1Jpvzl6FHbt0h6+UrXA5+1TGHHjE9a9+r160T1nU+VfUiqAVJrwjTGlwDhgMZABLDDGpIvIIyIy1F7tRSBWRLKweuUT7e+mAwuATcAnwB+NMcfL26a9reeB5sCKMrffXQuk2dfwnwFG2AcVgWv7dgB2asJXqlbY2CIRVqyA2FjemPcQAzK/djokpbwmgZ4zqyMlJcWsXr3auQAWLoThwxl621NsaNGx8vWVUgEve/pgOHCANV0v5YLdmTx6xWhe7j7UuocfHcCnnCcia4wxKWXLdd5IX9q6FUBP6StV2zRtyk0jHuO/HS/m4SUv8MQnM6l7XJ+0pwKbJnxfysqC2FgKoho6HYlSqoYV143kzuGTmNnjBm7c8F/eePMhmh7JczospcqlCd+XsrIgMdHpKJRSPmKkDv/sfSt/HPoAXfZuI3XO3bBmjdNhKeWRPjzHR1wTF7F81Qa+bd3F6VCUUjXIfcKdkxZ1upTsmJbMemcaXHIJvPQSrvWNfv5cr+urQKA9fB+JLC2hZcEBdkbrPfhKhYL05u0ZOnIGpKTATTcx+bNZel1fBRTt4ftI68N7qINhR4wO2FMqVBxsEA1LlsCECdwxcybJuzMYN/QBnYZXBQTt4fuIK+8HAO3hKxVqIiLgmWcYO/xB2h3azaJXxtN/ywqno1JKE76vtMmzZgreEdOqkjWVUrXR4nN6Mvj2p8lu0pJZ7z3GX5e8oKf4laM04ftI27zd5EWdpbfkKRXCdkXHc93Nf+Pl7kMYtXoh78y9DzIynA5LhShN+D7SJu8HdupDc5QKOa6Ji067Zl8SXpep/cYy9tcPkpC/D5KT4emn4cSJCraiVM3ThO8jbfN2s0Nn2FNK2RZ37MmAO56Ffv3grrvgyivh+++dDkuFEE34vlBcTMuC/drDV0qdZn/DJpCaCi+8AN9+S0FiJ+65+h5we6bJyTMEnu73V6o6NOH7wo4d1MHoHPpKqV8SgdGjYf16Njdz8dSiGTB4MGRnOx2ZquX0Pnxf2LwZQE/pK6V+wb3nXufGJxi59kMe/vINSEqCRx8l7EQHjtcJczBCVVtpD98X0tIA2NK0jcOBKKUC2Yk6YbycMgw2bYI+feDee3n/1XtI2pPldGiqFtKE7wtpaeyMjudoRJTTkSilgsHZZ8MHH8D8+cQXHiT11XuY/NksOHzY6chULaKn9H0hLY0tTc92OgqlVJA4dZq/AY1GP8/Ez1/h9jUfWE/bfOwxGDUKwsLKrKvT9Kqq0R5+TSspgcxMPZ2vlDojBVENeXDgOIaMnAHnngtjx8KFF8Ly5U6HpoKc9vBr2pYtUFpKZpwmfKXUmUuP74Cr+QNcHdOTf617Ey69FG64gdbRV7IrOh7Q3r6qGu3h1zQdsKeUqikifNipt3Xnz+TJkJrK0hfGMvXT54grzHM6OhVkNOHXtLQ0CAtje0yC05EopWqL+vVh6lTYto15XQdw03ef8MWs0dz75WucVXzE6ehUkNBT+jUtLQ06dqQkvK7TkSilaonTZt3r/wdmXzice7+ay59WzOeWdR/xwkW/hoJLoVEj54JUAU+M25SOtU1KSopZvXq1f3faoQMkJ+NqN9K/+1VKhZykvduY8OWr9Nm+Bpo0gfHj4c9/tpbRa/yhSkTWGGNSypbrKf2aVFQE27dDly5OR6KUCgHpzdvz2+umMuS2GXDZZTBlCrRpAw8+CPv3Ox2eCjCa8GtSRgYYw9h1xU5HopQKIRtbJMJ778H69TBoEEyfDm3aMG3xs7Q7mON0eCpAaMKvSfYI/a066Y5Sygnnnw/z51tT9d58M9dt/Iyls3/P7LenwrJlpz2VT4UeHbRXk9LSKA6rq4/FVUo55ufr9rHDib3zcm5Z9xG3rlsEfftCt27cH9+bDzr15mhElF7XDzE6aK8mDRpE+totDP7tM/7bp1JKVSKytIRh6Z9zx+qFnHtgJwWRDXg3qQ+3z3lCxxzVQuUN2tMefk1KSyMzLtHpKJRS6jTF4REs6NqfBedfSUruJm5e9zE3rv8EzvsQLrkExoyh07r62uuv5TTh1wDXxEXEFR5iVU4OmxL7Ox2OUkp5JsLqhCRWJyTxyBW/Y93Zu+E//4HbbmNVRD0+OqcXDGwAvXtDHR3iVdtoi9aQ7rkZAKxp1dnhSJRSqnJ59RvDhAmQmQlffMGicy5hUOb/oE8faN/emso3I8PpMFUN0oRfQ1JyNvFTeARp8e2dDkUppbzimrgI14Mf4/roRx64ajwXjnsN5s61Hss7bRp07kxGs7b8o/etsHWr0+GqatJT+jWke+5m1scncixMp9RVSgWnn+pG4doYBcnjaZZ4C4O2fM3VGV8x4au50HEudOsG114LQ4bAeefhmvTRz9/Va/+BT3v4NSDyWDFJe7extlUnp0NRSqkase+sWOZ0H8J1t/yNi+98BZ56CiIj4S9/ga5dweVi6qfP0Xv7GiJKjzkdrvKC9vBrwPl7thJxopTVCZrwlVK1z55GTXHtbQqX/5W4lEOs6lYMH3zA9R8tZuTaRRRG1IMdg6ye/1VXQbNmToesPNCEXwNS7AF7a1ue63AkSinlW/sbxuDKAjqNIbLDSHp+v4F+WSu5eeVKePddADLiXHzdpiujHh5tjfjXp/gFBD2lXwOSczPYFpNgjXpVSqkQUVw3kmXtL+ShAeNg1y5YswYef5yD9Rtz83cfWz3+mBjo2dO6FLBsGfz0k9Nhhyzt4VeXMXTP3cynHX7ldCRKKeUcEUhOhuRkbsk/n8jSEjKvagxLl8KSJdYDfR57zBoHkJJiHQT07EnKkkIONGhy2qA/fayvb2jCr67MTGKOFuj1e6VUSHNP0mDN7kffvtZr2jS63P0WF+1K4+LvNzLmxB54+mn4+99ZDeyMjofcftZBQI8ehB8vpTRM01NN0/+i1fX11wA6Ql8ppco47SAgsj5LO1zE0g4XMWb6YCguhrVrmfbQbLrnbqb+ex8SN3cuAOlhdclo5iK9eXtol2udOejSBaKiHKpJ7aAJv7qWLycv6iy2xSQ4HYlSSgWPyEjo0YPZFx1iNoAxJOTvJXn3Zrrs2UaXvdsYkvEVjP3EWj88HJKSrOR/3nnWAUBSErRoYV1OUJXSp+VVR3ExtGjBwvjzGT/0Pt/tRymlQpExtM7fS5c9WTzXWWDtWuu1f/+pdaKjrcSflHTqIODcc0P6QECflucLixZBXh7v9OvrdCRKKVX7iLArOp5d0fG4TgDdekE3iD1ymI4HvifxwE4e6SCQns7hV98g+qfCU99t0AA6dLCmCU5MhI4dTy3HxXk8GDh5CaK2DhTUhF8dc+ZAixYsd3VzOhKllAoZBxtEs6JBNCvanM+rAD2vhh6GuCN5dDzwPW0P5dLuUC6uvN24lnxN63ffo+6J46c20LAhtGljvVyun5cvyM0hp3FzMKZWnh3QU/pnav9+aNkS7r4bV53LfLMPpZRS1RZ+vJSE/L248nbTNm83Zx/eQ6uC/bTK30dSySE4fPi09YvD6pLbKI7cRs24tO8F1m99ixan/42Ph4gIh2pUMT2lX8Om3PgXppSW0v9gG4hzOhqllFLlKQ0LJzumFdkxrfjcw+cNi4toVbCPVvn7SMjf+/PBQELBPva8tZCmRw4Tbk784nsH6zUitkObUwcCzZtblwvi4qBp01PLcXHWJQaHacI/Q9ekLWFj8/ZsiXM5HYpSSqlqKIysT2aci8xyfs/rnDhObFEBq0Ylwe7dPPCvxTQvPETzwoM0K8yj2frtNP/fKmKKCog4Uep5J/XqkVO3IYfqNyavXiMu69nJmoUwJgbGjLEOGnzMq4QvIgOBp4EwYLYxZnqZzyOBV4HuwEHgBmNMtv3ZJGAUcBz4szFmcUXbFJG2wDwgBlgL3GqMKaloH363cSPn7d3G1Ct+58julVJK+c+JOmHsb9gE1/zdVkHXAZ5XNIazSoqIKcontiifmKICYoryiTlq/Y09mm+9LyqAFSvgkH054frrAyPhi0gY8CxwJZADrBKRVGPMJrfVRgF5xpgOIjICeBK4QUQ6AyOAJKAl8JmIdLS/U942nwRmGGPmicjz9rafK28f1f0PUGXbt8Pw4RRG1CO1k167V0opZRPhx8gG/BjZgJ1NvEvg2Y8N9NsAQW8ennMRkGWM2W6MKcHqfQ8rs84wYI69/DZwhYiIXT7PGFNsjNkBZNnb87hN+zt97W1gb3N4Jfvwnw0boFcvOHyYW26YxsEG0X7dvVJKqVomLAzq+Oc5dt7spRWwy+19jl3mcR1jTCmQD8RW8N3yymOBw/Y2yu6rvH34x8aN0Ls3PxQeo9+vp/Fdy3P8tmullFKqury5hu+pF132Xr7y1imv3NOBRkXrexsHIjIGGGO/LRSRTA/fq46mvPiHAzW8zUDQFNB6BQ+tV3DRegUXv9VLnvTJZtt4KvQm4ecArd3eJwC7y1knR0TCgcbAoUq+66n8ABAtIuF2L959/fL2cRpjzCxglhf1OiMistrT/Y3BTusVXLRewUXrFVxqa728OaW/CkgUkbYiEoE1CC+1zDqpwEh7+VpgqbFm9EkFRohIpD36PhH4trxt2t9ZZm8De5sLK9mHUkoppSpRaQ/fGFMqIuOAxVi30L1kjEkXkUeA1caYVOBF4DURycLqdY+wv5suIguATUAp8EdjzHEAT9u0d/kAME9EpgHr7G1T3j6UUkopVblaPbWuL4jIGPuyQa2i9QouWq/govUKLrW2XprwlVJKqdrPPzf/KaWUUspRmvC9JCIDRSRTRLJEZKLT8VSFiLQWkWUikiEi6SIy3i6PEZFPRWSr/beJXS4i8oxd1w0ikuxsDSomImEisk5EPrTftxWRlXa95tsDQ7EHj86367VSRFxOxl0REYkWkbdFZLPdbj1qQ3uJyN32v8E0EXlTRKKCtb1E5CUR2SciaW5lVW4jERlpr79VREZ62pc/lVOvv9v/FjeIyHsiEu322SS7XpkiMsCtPKB+Mz3Vy+2zCSJiRKSp/T5o2qtKjDH6quSFNbBwG9AOiADWA52djqsK8bcAku3ls4AtQGfgb8BEu3wi8KS9fBXwMdbcBxcDK52uQyX1uwd4A/jQfr8AGGEvPw/caS//AXjeXh4BzHc69grqNAcYbS9HANHB3l5Yk2ftAOq5tdPtwdpeQG8gGUhzK6tSG2E9M2S7/beJvdwkAOvVHwi3l590q1dn+/cwEmhr/06GBeJvpqd62eWtsQaQ7wSaBlt7VeWlPXzveDO9cMAyxvxgjFlrL/8IZGD9+LpPV1x2GuNXjeUbrLkRWvg5bK+ISAIwGJhtvw/s6Zm9ICKNsH6cXgQwxpQYYw5TC9oL686gemLNpVEf+IEgbS9jzJf8ci6QqrbRAOBTY8whY0we8Ckw0PfRl89TvYwx/zWnZkD9BmuOFKji9Ol+qUA5ymkvgBnA/Zw+kVvQtFdVaML3jjfTCwcF+7ToBcBKoLkx5gewDgqAZvZqwVTf/8P6n/Xkw6oDd3pm77UD9gMv25cqZotIA4K8vYwxucA/gO+xEn0+sIbgby93VW2joGi7Mu7A6v1CkNdLRIYCucaY9WU+Cup6lUcTvne8mtY30IlIQ+Ad4C5jTEFFq3ooC7j6isjVwD5jzBr3Yg+rVml65gAQjnXq8TljzAXAEazTw+UJinrZ17OHYZ36bQk0AAZ5WDXY2ssbVZ1+PCCJyENYc6q8frLIw2pBUS8RqQ88BEz29LGHsqCoV0U04XvHm+mFA5qI1MVK9q8bY961i/eePPVr/91nlwdLfXsBQ0UkG+uUYV+sHn+0fcoYPE/PjFQwPXMAyAFyjDEr7fdvYx0ABHt79QN2GGP2G2OOAe8CPQn+9nJX1TYKlrbDHqB2NXCzsS9oE9z1ao918Lne/g1JANaKSDzBXa9yacL3jjfTCwcs+7rni0CGMeYpt4/cpysuO43xbfZI1YuB/JOnKQOJMWaSMSbBGOPCapOlxpibCfLpmY0xe4BdInLykYxXYM1WGdTthXUq/2IRqW//mzxZr6BurzKq2kaLgf4i0sQ+A9LfLgsoIjIQaxbUocaYIrePqjR9ur/jrogxZqMxppkxxmX/huRgDW7eQ5C3V7mcHjUYLC+sUZtbsEaePuR0PFWM/RKs004bgO/s11VY10OXAFvtvzH2+gI8a9d1I5DidB28qOPlnBql3w7rRycLeAuItMuj7PdZ9uftnI67gvp0A1bbbfY+1ojgoG8vYCqwGUgDXsMa3R2U7QW8iTUW4RhWshh1Jm2EdU08y379NkDrlYV17frk78fzbus/ZNcrExjkVh5Qv5me6lXm82xOjdIPmvaqyktn2lNKKaVCgJ7SV0oppUKAJnyllFIqBGjCV0oppUKAJnyllFIqBGjCV0oppUKAJnyllFIqBGjCV0oppUKAJnyllFIqBPw/vV/bfm66eNAAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 576x576 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#check k\n",
    "fig, ax = plt.subplots()\n",
    "fig.set_size_inches(8, 8)\n",
    "ax.plot(k0, pk0, 'r-', label='Theory')\n",
    "ax.hist(k, bins=150, range=(0, 1500), density=True, label='Monte-Carlo Sampling Result')\n",
    "ax.legend()\n",
    "ax.set_title('k')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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Vd555x23PO6FWrVqxV+X5b722mtue9yrvmdsjAkExgDtgThgrTEm2nGcSzf4nOw4znC3JRMRt/DG94QvzXyjMvM9582bly1btpCYmEju3LmZP38+pUuXvu7n/KuMH3zwwWv6ui1btjB8+HBiYmKoWrUqqampjBs3LtNffz3bM44ePZoSJUqwefNmAHbu3ElQUNA1P871KFWqFJGRkW57vH79+vHBBx9w/PhxqlSpwu23307ZsmXd9vgXeu2113jmmWfc8liZGRk3BPY4jrPPcZwUYBLQ3S3PLiLZw3HIkZZKjrRUOHvW9SctzXYqj9O5c2diYlwvBCZOnEj//v3P33fixAl69OhBREQEjRs35ueffwbgxRdfZOjQobRq1YqKFSvy3nvvAa5Ll/bu3Uvt2rV58sknAXjzzTdp0KABERERvPDCCxlmeOONN3j22WepWrUqADly5Dhf6DNnzqRRo0bUqVOHdu3a8dtvv53PMGzYMDp06MBdd9110eNdLveFDh8+fNELjypVqpxfk7tHjx7Uq1eP6tWrX/SiIF++fDz11FPUq1ePdu3asWbNmvN/B9HR0YBrpNq9e3c6depElSpVeOmll/723LGxsdSoUeP88b169aJTp06EhYVdtMnGZ599RuXKlWnVqhX33Xcfw4dfeewXEhJCpUqVOHz4MABHjx6ld+/eNGjQgAYNGrBixQoAli5dSu3atalduzZ16tQhPj7+bzMLw4cPZ/z48Rc9/siRI0lMTKR27drceeedV8ySGZk5m7o08OsFn8cBjTI4rrcxpgWwC3jMcZxfMzhGRLKK41Ai4ThER8OGDbBzJxw6xKLNeyiRcIK8Z5Ncx7117nhjoHhxYpy8/JavCEfyF2Vb8QqwuijUqgW5cl32qbxxtJ0Zd9xxBy+//DJdu3bl559/ZujQoedXx3rhhReoU6cOM2bMYNGiRdx1113nN4rYsWMHixcvJj4+nipVqvDAAw8watQotmzZcv6YefPmsXv3btasWYPjOHTr1o1ly5bRokWLizJs2bKFxx9/PMN8zZo1Y9WqVRhj+PTTT3njjTf473//C8D69etZvnw5uXPnZsmSJee/5kq5/zJ06FA6dOhAZGQkbdu25e677yYsLAyAzz//nCJFipCYmEiDBg3o3bs3ISEhnD59mlatWvH666/Ts2dPnnvuOebPn8+2bdu4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\n",
      "text/plain": [
       "<Figure size 576x576 with 1 Axes>"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#check theta\n",
    "theta0 = np.linspace(0, np.pi, 100)\n",
    "ptheta0 = np.sin(theta0) * 0.5#note that, there is an amplitude as well, and we can easily know it is 0.5\n",
    "ax.cla()\n",
    "ax.plot(theta0, ptheta0, 'r-', label='Theory')\n",
    "ax.hist(np.arccos(cos_theta), bins=100, range=(0, np.pi), density=True, label='Monte-Carlo Sampling Result')\n",
    "ax.legend()\n",
    "ax.set_title('theta')\n",
    "fig"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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x3p3RZJUJ12OwHsTR+BqBP5NS1pro0bgkiSp9/Fa6JJ6nWHT71nn+ZLLjqxTT9ST/L32LEfgkiQVyACXJKlABngPiAhOPvnktuerV69m8ODBfPKTn9yg9n7729/yz//8zxu07A9/+EPGjh3L3nvvzV577cWXv/zlrheq8tBDD3Wr32+++SYnnXQSo0aNYt999+Wwww5jxYoV3e12t2y33XYALF26lGOPPbaL2rW56aabGDx4MKNHj2avvfbiyiuv7JF2qx1++OGs/RDmpZde2uPtS2osfe4cePtzLBurlnM02267LU888QQrV65k66235v7772fIkCEbvM61Af7FL36xW8s98cQTTJs2jXvuuYe99tqL1atXc91119W8/IbcqvSb3/wm73//+3n88ccBeOaZZxgwYEC329kQu+66K3fc0XP3wjnhhBP41re+xfLly9lzzz059thj2W233bpecANceumlXHDBBZukbUmNwRF4D5k4cSL33NP65uHWW2/lxBNPbCt79dVXOeqoo2hqauLggw/mscceA+Diiy/mjDPO4PDDD+eDH/wgV199NQDTp0/n+eefZ/To0Zx77rkAXHHFFRxwwAE0NTVx0UUXddiHr3/96/zt3/4te+21FwD9+/dvexPwH//xHxx00EHsv//+fOxjH+M3v/lNWx+mTp3KEUccwSmnnLJOe531u9pLL720zpuVPffcs+0a8EcddRRjxoxhn332WeeNxHbbbcd5553HmDFj+NjHPsajjz7atg9mzZoFtI6IJ0+ezIQJE9hzzz356le/+q51L1myhH333bet/tFHH82ECRMYMWLEOjeCueGGG/jQhz7E4Ycfzuc+9zmmTZvW4f5ba9CgQeyxxx689NJLACxbtoxjjjmGAw44gAMOOICf/vSnAPzoRz9i9OjRjB49mv3335833njjXUcwpk2bxk033bRO+9OnT2flypWMHj2ak046ab19kaTOGOA9ZMqUKdx2222sWrWKxx57jIMO+v/3e7nooovYf//9eeyxx7j00kvXCcqnn36ae++9l0cffZSvfvWrvPPOO1x22WX88R//Mc3NzVxxxRXcd999PPfcczz66KM0NzezYMEC/uu//utdfXjiiScYM2ZMh/077LDDePjhh/n5z3/OlClT+PrXv95WtmDBAu6++25uueWWdZZZX7/XOuOMM7j88ss55JBD+MpXvsJzzz3XVjZjxgwWLFjA/Pnzufrqq1m+fDkAv//97zn88MNZsGAB22+/PV/5yle4//77ueuuu7jwwgvbln/00UeZOXMmzc3NfP/736f9NQDaa25u5vbbb+fxxx/n9ttv58UXX2Tp0qX8/d//PQ8//DD3339/273X1+eFF15g1apVNDU1AfClL32Js88+m3nz5nHnnXfy2c9+FoBvfOMbXHPNNTQ3N/PjH/+Yrbfeusu2ofVCPFtvvTXNzc3eiEbSButzh9DrpampiSVLlnDrrbfy53/+5+uU/eQnP+HOO+8E4KMf/SjLly/n9ddfB+DII49k4MCBDBw4kPe9731tI+Nq9913H/fddx/7778/ACtWrOC5555j3LhxNfevpaWFE044gZdeeom3336b4cOHt5VNmjSpw/DprN/vec972uqMHj2axYsXc9999zFnzhwOOOAA5s6dy957783VV1/NXXfdBcCLL77Ic889x6BBg9hyyy2ZMGECAKNGjWLgwIEMGDCAUaNGsWTJkra2P/7xjzNo0CAAjj76aH7yk58wdmyH1zMAYPz48W19GzlyJL/61a945ZVX+NM//VN22mknoPW2rM8++2yHy99+++08+OCDPPPMM1x//fVstdVWAMyZM4eFC9vunsvvfvc73njjDQ499FDOOeccTjrpJI4++miGDh3aad8kqacZ4D1o0qRJfPnLX+ahhx5qG21C6x3H2lt7q9D2txzt6Dx0ZnL++efzl3/5l+vMv+aaa7j++usBmD17Nvvssw8LFixgv/32e1cbf/VXf8U555zDpEmTeOihh7j44ovbyqpvVdp+vZ31u9p2223H0UcfzdFHH80WW2zB7Nmz+c1vfsOcOXOYO3cu22yzDYcffjirVq0CYMCAAW3tbLHFFm37YIsttlhn+9uvq6N1V+toX3bnSoNrz4HPnTuXI488kokTJ/JHf/RHrFmzhrlz577rTc706dM58sgjmT17NgcffDBz5syhf//+rFmzpq3O2m2WpJ7mIfQedMYZZ3DhhRcyatSodeaPGzeu7VDpQw89xM4778wOO+zQaTvbb789b7zxRtvzT3ziE8yYMaPt092//vWvefnllznzzDNpbm6mubmZXXfdlXPPPZdLL720bYS5Zs0a/umfWm/B/vrrr7edq7755ptr2p5a+v3Tn/6U1157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\n",
      "text/plain": [
       "<Figure size 576x576 with 1 Axes>"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#check phi\n",
    "phi0 = np.linspace(0, 2*np.pi, 100)\n",
    "pphi0 = np.ones_like(phi0) * 1/(2*np.pi)\n",
    "ax.cla()\n",
    "ax.plot(phi0, pphi0, 'r-', label='Theory')\n",
    "ax.hist(phi, bins=100, range=(0, 2*np.pi), density=True, label='Monte-Carlo Sampling Result')\n",
    "ax.legend()\n",
    "ax.set_title('phi')\n",
    "fig"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "#compute kx, ky and kz\n",
    "kx = k * sin_theta * np.cos(phi)\n",
    "ky = k * sin_theta * np.sin(phi)\n",
    "kz = k * cos_theta"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x576 with 1 Axes>"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#check\n",
    "ax.cla()\n",
    "ax.hist(kx, bins=100, range=(-1500, 1500), color='red', histtype='step', label='kx')\n",
    "ax.hist(ky, bins=100, range=(-1500, 1500), color='blue', histtype='step', label='ky')\n",
    "ax.hist(kz, bins=100, range=(-1500, 1500), color='black', histtype='step', label='kz')\n",
    "ax.legend()\n",
    "ax.set_title('kx ky kz')\n",
    "fig"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "可以同样画出E的理论分布与采样结果，需要一点基础的概统知识\n",
    "\n",
    "设有随机变量X的分布为$f(x)$，有另一随机变量Y与单值函数$y=y(x)$使$Y=y(X)$，那么可以通过如下公式得到该随机变量Y的分布：\n",
    "\n",
    "$$ g(Y) = f(y^{-1}(Y)) {y^{-1}}'(Y) $$\n",
    "\n",
    "这里的$y^{-1}$指反函数，例如由$E(k) = \\sqrt{m^2 + k^2}$，有$k(E) = \\sqrt{E^2 - m^2}$\n",
    "\n",
    "放到这里的实际问题中，显然有：\n",
    "\n",
    "$$ g(E) = p(k(E))\\frac{\\partial k}{\\partial E} $$\n",
    "\n",
    "$$= A'{k^2 \\over e^{\\sqrt{k^2 + m^2} / T} - 1} \\frac{E}{\\sqrt{E^2 - m^2}}$$\n",
    "\n",
    "$$= A'{E^2 - m^2 \\over e^{E / T} - 1} \\frac{E}{\\sqrt{E^2 - m^2}}$$\n",
    "\n",
    "$$= A' \\frac{E\\sqrt{E^2 - m^2}}{e^{E / T} - 1}$$\n",
    "\n",
    "同样，$A'$也是归一化系数，可以积分后算出来"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Amplitude: 6271146.7848211\n"
     ]
    }
   ],
   "source": [
    "#check E\n",
    "def raw_funcE(E):\n",
    "    T = 150\n",
    "    m = 135\n",
    "    return E*np.sqrt(E**2 - m**2) /(np.exp(E/T) - 1)\n",
    "\n",
    "amplitudeE, _  = quad(raw_funcE, 135, 4000)\n",
    "\n",
    "def funcE(E):\n",
    "    global amplitudeE\n",
    "    return raw_funcE(E) / amplitudeE\n",
    "print('Amplitude: {}'.format(amplitudeE))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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yYJuA1ndoSep+3eQum8HozYuZdCOL7n1svsoSEyqvi0ROa709HQ2b97MK6+8wsUXX3zMZwsWLGD69OkAjBw5kr1793LgwAEAxo4dS1JSEklJSZx00kllPe/y3n//fd5//30GDRoEwMGDB9mwYQPDhw8Pu77t27dz9dVXs3PnTo4ePUr37t3LPhs3blylYVVV3a1atSrbJyMjg02bNvH+++8ze/ZshgwZwuLFi+nbty9PPvkkb7zxBgDbtm1jw4YNJCcn06hRI8aMGQPAgAEDSEpKIjExkQEDBrB58+ayti+44AKSk5MBuOyyy1iwYAGZmd97umyZUaNGldWWlpbGli1b2LNnD+eeey5t27YFQssMr1+/vtLjp02bxocffsi6det4/vnnady4MQCzZ89m7dq1Zfvl5uaSl5fHsGHDuOuuu7jmmmu47LLL6Ny5c5W11ZdwAt8q2VbxAfxV7XPcY82sOTAduNM5l1sHdWBmkwgN+dO1a9dqmhQASkrg17+Gxx7jrb7n8uuxd1IY/+/rapevmsOfZj3O/33jIX5y2W99LFQkeowbN45f//rXzJs3r6w3C6EV8SoqXfq24hK6lV1Hd85x77338pOf/OSY7U899RTPP/88ALNmzaJfv34sX76cgQMHfq+Nn//859x1112MGzeOefPm8cADD5R9Vn7p3Yrnraru8po3b85ll13GZZddRlxcHLNmzWLXrl3Mnj2bxYsX07RpU0aMGEF+fj4AiYmJZe3ExcWV/RnExcUd8/0rnquyc5dX2Z9lTdaWKb2Gv3jxYsaOHctFF11Ehw4dKCkpYfHixd/7R1FWVhZjx45l1qxZnHHGGcyePZuEhARKSkrK9in9zvUlnCH97UD5mQidgR1V7WNmCUArYN/xjjWzREJhP8U593q5fXaVDtV7v3fXoA6cc8855zKdc5kpKSlhfD3hllvgscfgF7/gzh/+xzFhDzB9wCiyxvycEV8v55k3HoKCAp8KFYkeN910E/fffz8DBgw4Zvvw4cPLhm7nzZtHu3btaNmyZZXttGjRgry8vLL3F154IZMnTy6b/f7NN9+we/dubr/9drKzs8nOzubkk0/m7rvv5qGHHirrwZaUlPCXv/wFgAMHDpRda3/55ZcJRzh1L1y4kP379wNw9OhR1q5dS7du3Thw4ABt2rShadOmfPnll3zyySffa786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\n",
      "text/plain": [
       "<Figure size 576x576 with 1 Axes>"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "energy = np.sqrt(k**2 + 135**2)#135 for mass0\n",
    "energy0 = np.linspace(135, 2000, 100)\n",
    "pe = funcE(energy0)\n",
    "ax.cla()\n",
    "ax.plot(energy0, pe, 'r-', label='Theory')\n",
    "ax.hist(energy, bins=100, range=(0, 2000), density=True, label='Monte-Carlo Sampling Result')\n",
    "ax.legend()\n",
    "ax.set_title('E')\n",
    "fig"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
